package com.zimin.common.utils;

import com.alibaba.fastjson.JSON;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @author zimin
 * @since 2021/11/22 3:28 下午
 * <p>
 * 尽可能使用JSON.parseObject()的方式，比copyProperties()的方式快一些
 */
public class BeanUtils extends org.springframework.beans.BeanUtils {


    /**
     * <p>List 转换指定泛型</p>
     *
     * @param sourceList 原List
     * @param vClass     转换List的泛型
     * @return java.util.List<V>
     * @author zimin
     * @since 2021-11-22 15:27:15
     */
    public static <T, V> List<V> listEntityToView(List<T> sourceList, Class<V> vClass) {
        if (ObjectUtils.isEmpty(sourceList)) {
            return new ArrayList<>();
        }
        return sourceList.stream().map(source -> JSON.parseObject(JSON.toJSONString(source), vClass)).collect(Collectors.toList());
    }


    /**
     * <p>指定泛型转V</p>
     *
     * @param t 原对象
     * @param v 转换的类型
     * @author zimin
     * @since 2022-01-24 17:10:12
     */
    public static <T, V> V coverClass(T t, Class<V> v) {
        return JSON.parseObject(JSON.toJSONString(t), v);
    }
}
